"""
@name : 高阶函数hw
@author : chenwenying
@projectname: python操作数据库
@time : 2022/7/19
"""
# 第一题 拼接数字，输出整数
# 第一种方法：
# from functools import reduce
# lst = ['a', '1', '2bb', '234', '', '9']
# result = filter(lambda x: x.isdigit(), lst)
# print(int(reduce(lambda x, y: x+y, result)))
#
# 第二种方法
# def func2(x, y):
#     if x.isdigit() and y.isdigit():
#         return x + y
#     elif x.isdigit() and not y.isdigit():
#         return x
#     elif not x.isdigit() and y.isdigit():
#         return y
#     else:
#         return ''
#
#
# print(int(reduce(func2, lst)))

# 第二题 排序，正数在左（从大到小），负数在右（从小到大），0在中间
# list1 = [7, -8, 5, 4, 0, -2, -5]
# # 第一种方法
# result = sorted(list1, key=lambda x: (x <= 0, abs(x)))
# print(result)

# # 第二种方法
# result1 = list(filter(lambda x: x <= 0, list1))
# result2 = list(filter(lambda x: x > 0, list1))
# result1.sort(reverse=True)
# result2.sort()
# print(result2 + result1)

# 第三题 排序，小写、大写、奇数、偶数
# s = 'asdf234GDSdsf23'
#
#
# def func1(x):
#     return (x.isdigit(), x.isupper(), x.isdigit() and int(x) % 2 == 0)
#
#
# print(sorted(s, key=func1))